home *** CD-ROM | disk | FTP | other *** search
/ HiJaak Graphics Suite 3.0 / HiJaak Graphics Suite V3.iso / inset / prolog.pdp < prev    next >
Text File  |  1992-11-14  |  11KB  |  548 lines

  1. /PDDict 200 dict def
  2. PDDict begin
  3. %postscript proc redef
  4.     /bd    { bind def } bind def
  5.     /ld { load def } bd
  6.     /xd { exch def } bd
  7. %poscript graphic proc redef
  8.     /sg    /setgray ld
  9.     /ssg { setseparationgray } def
  10.     /lw /setlinewidth ld
  11.     /lc /setlinecap ld
  12.     /lj /setlinejoin ld
  13.     /sd /setdash ld
  14.     /ml /setmiterlimit ld
  15.  
  16.     /scfa { currentscreen 3 1 roll pop pop setscreen } bd
  17.  
  18.     /negative
  19.     { /trsfr1 currenttransfer def
  20.         { 1 exch sub trsfr1 } bind
  21.         settransfer
  22.     } bd
  23.  
  24.     /dotrnf
  25.     { /trary exch def
  26.       /trsfr1 currenttransfer def
  27.         { 255 mul cvi trary exch get 100 div trsfr1 } bind
  28.         settransfer
  29.     } bd
  30.  
  31.     /$canPrint true def
  32.     /$overprint false def
  33.     /$spread 0 def
  34.     /$doTrap false def
  35.  
  36.     /SetupPrint
  37.     {
  38.  
  39.         PrintMode 1 le        %Composite
  40.         {
  41.             /setcmykcolor where {pop}
  42.                 {
  43.                     /setcmykcolor
  44.                     { /$k xd 3 { 1 exch sub dup $k le {pop 0}{$k sub } ifelse 3 1 roll } bind repeat setrgbcolor } bd
  45.                 } ifelse
  46.             /setcmykoverprint where {pop}
  47.                 {
  48.                     /setcmykoverprint
  49.                     { 4 { pop } repeat } bd
  50.                 } ifelse
  51.             /setcolortransfer where {pop}
  52.                 {
  53.                     /setcolortransfer
  54.                     { 4 { pop } repeat } bd
  55.                 } ifelse
  56.         } if
  57.      PrintMode 2 ge         %4 Color Separation
  58.         {
  59.             /setcolortransfer where {pop}
  60.             {
  61.                 /setcolortransfer
  62.                 {
  63.                     CurrentInk 0 eq
  64.                     {
  65.                         pop pop pop setransfer
  66.                     }
  67.                     {
  68.                         CurrentInk 1 eq
  69.                         {
  70.                             pop pop settransfer pop
  71.                         }
  72.                         {
  73.                             CurrentInk 2 eq
  74.                             {
  75.                                 pop settransfer pop pop
  76.                             }
  77.                             {
  78.                                 CurrentInk 3 eq
  79.                                 {
  80.                                     settransfer pop pop pop
  81.                                 } if
  82.                             } ifelse
  83.                         } ifelse
  84.                     } ifelse
  85.                 } bd
  86.             } ifelse
  87.  
  88.             /setcmykcolor where {pop}
  89.             {
  90.                 /op
  91.                 {
  92.                     mul 5 1 roll mul 3 1 roll mul add add 0 eq
  93.                     {
  94.                         1 sg
  95.                     }
  96.                     { /$canPrint false def } ifelse
  97.                 } bd
  98.                 /setcmykcolor
  99.                 {
  100.                     /$K xd /$Y xd /$M xd /$C xd
  101.                     /$canPrint true def
  102.                     /$doTrap false def
  103.                     CurrentInk 0 eq
  104.                     {
  105.                            $C 0 eq {$M $oM $Y $oY $K dup 1 eq {$oK}{0} ifelse op }{1 $C sub sg } ifelse
  106.                     }
  107.                     {
  108.                         CurrentInk 1 eq
  109.                         {
  110.                                $M 0 eq {$C $oC $Y $oY $K dup 1 eq {$oK}{0} ifelse  op }{1 $M sub sg } ifelse
  111.                         }
  112.                         {
  113.                             CurrentInk 2 eq
  114.                             {
  115.                                 $Y 0 eq {$C $oC $M $oM $K dup 1 eq {$oK}{0} ifelse  op }{1 $Y sub sg } ifelse
  116.                             }
  117.                             {
  118.                                 CurrentInk 3 eq
  119.                                 {
  120.                                     $K 0 eq {$C $oC $M $oM $Y $oY op }{1 $K sub sg } ifelse
  121.                                 }
  122.                                 {
  123.                                     $C $oC mul $M $oM mul $Y $oY mul $K $oK mul
  124.                                     add add add 0 eq
  125.                                     {
  126.                                         1 sg
  127.                                     }
  128.                                     { /$canPrint false def } ifelse
  129.                                 }
  130.                                 ifelse
  131.                             } ifelse
  132.                         } ifelse
  133.                     } ifelse
  134.  
  135.                 } bd
  136.             } ifelse
  137.  
  138.             /setcmykoverprint where {pop}
  139.                 {
  140.                     /setcmykoverprint
  141.                     { /$oK xd /$oY xd /$oM xd /$oC xd } bd
  142.                 } ifelse
  143.         } if
  144.      PrintMode 2 le
  145.         {
  146.             /findcmykcustomcolor where {pop}
  147.                 {
  148.                     /findcmykcustomcolor
  149.                     { pop
  150.                       /$K xd /$Y xd /$M xd /$C xd
  151.                       [ $C $M $Y $K ] } bd
  152.  
  153.                 } ifelse
  154.             /setcustomcolor where { pop }
  155.                 {
  156.                     /setcustomcolor
  157.                     {
  158.                         /$$i xd aload pop
  159.                         4 { $$i mul 4 1 roll } repeat
  160.                         setcmykcolor
  161.                     } bd
  162.                 }ifelse
  163.             /setoverprint where { pop } { /setoverprint /pop ld } ifelse
  164.             /currentoverprint where {pop} { /currentoverprint 0 def } ifelse
  165.             /setseparationgray where {pop} { /setseparationgray /setgray ld } ifelse
  166.         } if
  167.      PrintMode 3 eq         %Full Color Separation
  168.         {
  169.             /findcmykcustomcolor where {pop}
  170.                 {
  171.                     /findcmykcustomcolor
  172.                      { CurrentInk eq 5 1 roll 4 { pop } repeat {[true]}{[false]} ifelse } bd
  173.  
  174.                 } ifelse
  175.             /setcustomcolor where { pop }
  176.                 {
  177.                     /setcustomcolor
  178.                     {
  179.                         /$canPrint true def
  180.                         /$doTrap $spread 0 ge def
  181.                         exch 0 get
  182.                         {1 exch sub sg}
  183.                         {
  184.                             pop $overprint
  185.                             /$doTrap false def
  186.                             {/$canPrint false def}
  187.                             {1 sg}
  188.                             ifelse
  189.                         } ifelse
  190.                     } bd
  191.                 }ifelse
  192.             /setoverprint where { pop } { /setoverprint {/$overprint xd} bd } ifelse
  193.             /currentoverprint where {pop} { /currentoverprint { $overprint } bd } ifelse
  194.             /setseparationgray where {pop} { /setseparationgray /setgray ld } ifelse
  195.         } if
  196.     } bd
  197. false {
  198.     /p {
  199.          transform
  200.          0.25 sub round 0.25 add exch
  201.          0.25 sub round 0.25 add exch
  202.          itransform
  203.     } bd
  204.     /l { p lineto } bd
  205.     /mt { p moveto } bd
  206.     /c { p curveto } bd
  207. }
  208. {
  209.     /l    /lineto    ld
  210.     /c    /curveto ld
  211.     /mt     /moveto    ld
  212. } ifelse
  213.  
  214.  
  215.     /ovp { /$cop currentoverprint def setoverprint }def
  216.     /ovpe { $cop setoverprint } def
  217.     /np    { newpath }bd
  218.     /cp    /closepath    ld
  219.     /gs    /gsave ld
  220.     /gr    /grestore ld
  221.     /sv    { /pagesv save def } bd
  222.     /rs { pagesv restore } bd
  223.     /a  /arc ld
  224.     /cir { 0 360 arc } bd  % x y r cir -> circle
  225.  
  226. %GS procs
  227.     %colours
  228.     /K { findcmykcustomcolor exch setcustomcolor } def
  229.     /k { setcmykcolor } bd
  230.  
  231.     %error messages
  232.     /msg1 (%%[ Error: PathLimitCheck; OffendingCommand: cl ]%%\n) def
  233.     /msg2 (%%[ Error: PathLimitCheck; OffendingCommand: fl ]%%\n) def
  234.     /msg3 (%%[ Error: PathLimitCheck; OffendingCommand: st ]%%\n) def
  235.  
  236.     /_err {print flush newpath} bd
  237.  
  238.     % eoclip; eofill; stroke functions which account for limitcheck errors:
  239.     /cl {
  240.        currentflat dup
  241.        {
  242.           gs
  243.           {eoclip} stopped
  244.           {
  245.              gr
  246.              2 mul dup setflat
  247.              dup 200 ge
  248.              {
  249.                 pop
  250.                 msg1 _err
  251.                 exit
  252.              } if
  253.           }
  254.           {
  255.              gr
  256.              setflat
  257.              exit
  258.           }ifelse
  259.        } bind loop
  260.        eoclip
  261.        setflat
  262.     } bd
  263.  
  264.     /fl {
  265.        $doTrap { gs $spread setlinewidth st gr } if
  266.        $canPrint
  267.        {
  268.           currentflat dup
  269.           {
  270.              gs
  271.              {eofill} stopped
  272.              {
  273.                 gr
  274.                 2 mul dup setflat
  275.                 dup 200 ge
  276.                 {
  277.                    pop
  278.                    msg2 _err
  279.                    exit
  280.                 } if
  281.              }
  282.              {
  283.                 gr
  284.                 setflat
  285.                 exit
  286.              }ifelse
  287.           } bind loop
  288.           eofill
  289.           setflat
  290.        }
  291.        {newpath}
  292.        ifelse
  293.     } bd
  294.  
  295.     /st  {
  296.        $doTrap { currentlinewidth $spread add setlinewidth } if
  297.        $canPrint
  298.        {
  299.           currentflat dup
  300.           {
  301.              gs
  302.              {stroke} stopped
  303.              {
  304.                 gr
  305.                 2 mul dup setflat
  306.                 dup 200 ge
  307.                 {
  308.                    pop
  309.                    msg3 _err
  310.                    exit
  311.                 } if
  312.              }
  313.              {
  314.                 gr
  315.                 setflat
  316.                 exit
  317.              }ifelse
  318.           } bind loop
  319.           stroke
  320.           setflat
  321.        }
  322.        {newpath}
  323.        ifelse
  324.     } bd
  325.  
  326.     /bbox { /$t xd /$r xd /$b xd /$l xd $l $t mt $r $t l $r $b l $l $b l cp } bd
  327.  
  328.     %linear interpolation r x0 x1 intp -> (x1-x0)r+x0
  329.     /intp { 3 -1 roll exch 2 index sub mul add } bd
  330.  
  331. %Gray scale gradfill
  332.     /bnd { np 0 $y1 mt 1 $y1 l 1 $y0 l 0 $y0 l cp fl /$y0 $y1 def } bd
  333.     /ffg {
  334.             dup 0 eq { pop 1 } if
  335.             /$n     xd    % numBands
  336.             /$k2    xd    % endgray
  337.             /$e        xd  % endpercent
  338.             /$k1    xd    % startgray
  339.             /$s        xd  % startpercent
  340.             /$y0 $s  def
  341.             0 1 $n div 1
  342.             {
  343.                 dup
  344.                 $k1 $k2 intp sg
  345.                 $s $e intp /$y1 xd
  346.                 bnd
  347.             } for
  348.         } bd
  349.  
  350.     /ffc {
  351.             dup 0 eq { pop 1 } if
  352.             /$n        xd
  353.             /$ck2 xd /$cy2 xd /$cm2 xd /$cc2 xd
  354.             /$e xd
  355.             /$ck1 xd /$cy1 xd /$cm1 xd /$cc1 xd
  356.             /$s xd
  357.             /$y0 $s def
  358.             0 1 $n div 1
  359.             {
  360.                 dup
  361.                 $cc1 $cc2 intp 1 index
  362.                 $cm1 $cm2 intp 2 index
  363.                 $cy1 $cy2 intp 3 index
  364.                 $ck1 $ck2 intp k
  365.                 $s $e intp /$y1 xd
  366.                 bnd
  367.             } for
  368.         } bd
  369.  
  370.     /gf0 {
  371.             /$canPrint true def
  372.             /$b        xd
  373.             /$an     xd
  374.             /$a     xd
  375.             /$b    $b $an 1 sub div def
  376.             /$y0 0     def
  377.             $a 0 get /$y1 xd
  378.             $a 1 get sg bnd
  379.             2 2 $an 2 mul 1 sub
  380.             {
  381.                 /$i xd
  382.                 $y0
  383.                 $a $i 1 sub get
  384.                 $a $i get
  385.                 $a $i 1 add get
  386.                 $b
  387.                 ffg
  388.             } for
  389.             /$y1 1 def
  390.             bnd
  391.          }bd
  392.     /gf1 {
  393.             /$b        xd
  394.             /$an    xd
  395.             /$a        xd
  396.             /$b    $b $an 1 sub div def
  397.             /$y0 0 def
  398.             $a 0 get /$y1 xd
  399.             $a 1 4 getinterval aload pop k bnd
  400.             5 5 $an 5 mul 1 sub
  401.             {
  402.                 /$i xd
  403.                 $y0
  404.                 $a $i 4 sub 9 getinterval aload pop
  405.                 $b ffc
  406.             } for
  407.             /$y1 1 def
  408.             bnd
  409.         } bd
  410.  
  411.     /frg {
  412.             dup 0 eq { pop 1 } if
  413.             /$n        xd
  414.             /$k2     xd
  415.             /$er    xd
  416.             /$ey    xd
  417.             /$ex    xd
  418.             /$k1     xd
  419.             /$sr    xd
  420.             /$sy    xd
  421.             /$sx    xd
  422.             0 1 $n div 1
  423.             {
  424.                 /$i xd
  425.                 $i $sx $ex intp
  426.                 $i $sy $ey intp
  427.                 $i $sr $er intp
  428.                 $i $k1 $k2 intp sg
  429.                 0 360 np arc cp fl
  430.             } for
  431.         } bd
  432.  
  433.     /frc {
  434.             dup 0 eq { pop 1 } if
  435.             /$n        xd
  436.             /$ck2 xd /$cy2 xd /$cm2 xd /$cc2 xd
  437.             /$er    xd
  438.             /$ey    xd
  439.             /$ex    xd
  440.             /$ck1 xd /$cy1 xd /$cm1 xd /$cc1 xd
  441.             /$sr    xd
  442.             /$sy    xd
  443.             /$sx    xd
  444.             0 1 $n div 1
  445.             {
  446.                 /$i xd
  447.                 $i $sx $ex intp
  448.                 $i $sy $ey intp
  449.                 $i $sr $er intp
  450.                 $i $cc1 $cc2 intp
  451.                 $i $cm1 $cm2 intp
  452.                 $i $cy1 $cy2 intp
  453.                 $i $ck1 $ck2 intp k
  454.                 0 360 np arc cp fl
  455.             } for
  456.         } bd
  457.  
  458.     /rf0 {
  459.             /$canPrint true def
  460.             /$b        xd    %number of bands
  461.             /$an     xd  %number of colors
  462.             /$a        xd    %percent/Color array
  463.             /$r2    xd
  464.             /$y2    xd
  465.             /$x2    xd
  466.             /$r1    xd
  467.             /$y1    xd
  468.             /$x1    xd
  469.             /$r $r1 def
  470.             /$x $x1 def
  471.             /$y $y1 def
  472.             /$b    $b $an 1 sub div def
  473.             $a 1 get sg gs fl gr cl
  474.             0 2 $an 2 mul 3 sub
  475.             {
  476.                 /$i xd
  477.                 $x $y $r
  478.                 $a $i 1 add get
  479.                 /$p $a $i 2 add get def
  480.                 /$x $p $x2 $x1 intp def
  481.                 /$y $p $y2 $y1 intp def
  482.                 /$r $p $r2 $r1 intp def
  483.                 $x $y $r
  484.                 $a $i 3 add get
  485.                 $b frg
  486.             } for
  487.         } bd
  488.     /rf1 {
  489.             /$b        xd    %number of bands
  490.             /$an     xd  %number of colors
  491.             /$a        xd    %percent/Color array
  492.             /$r2    xd
  493.             /$y2    xd
  494.             /$x2    xd
  495.             /$r1    xd
  496.             /$y1    xd
  497.             /$x1    xd
  498.             /$r $r1 def
  499.             /$x $x1 def
  500.             /$y $y1 def
  501.             /$b    $b $an 1 sub div def
  502.             $a 1 4 getinterval aload pop k gs fl gr cl
  503.             5 5 $an 5 mul 1 sub
  504.             {
  505.                 /$i xd
  506.                 $x $y $r
  507.                 $a $i 4 sub 4 getinterval aload pop
  508.                 /$p $a $i get def
  509.                 /$x $p $x2 $x1 intp def
  510.                 /$y $p $y2 $y1 intp def
  511.                 /$r $p $r2 $r1 intp def
  512.                 $x $y $r
  513.                 $a $i 1 add 4 getinterval aload pop
  514.                 $b frc
  515.             } for
  516.         } bd
  517.  
  518.     /trs { translate rotate scale } bd
  519.  
  520.  
  521.     %array defined fountain fill [{ colordef percentPos}... ]
  522.     /gf { trs /$y0 0 def
  523.           { exec /$y1 xd bnd } bind forall
  524.         } bd
  525.  
  526.     /epss { /EPSsave save def
  527.             /showpage {} def
  528.             userdict begin
  529.             0 setgray 0 setlinecap 1 setlinewidth 
  530.             0 setlinejoin 10 setmiterlimit [] 0 setdash
  531.             newpath
  532.     } bd
  533.  
  534.     /epse { end EPSsave restore } bd
  535.  
  536.     /sf { exch findfont exch scalefont setfont } bd
  537.     /smf { exch findfont exch makefont setfont } bd
  538.     /pp {{cvx exec} forall} bd
  539.     /pp1 { /$p exch def /$y xd /$x xd /$j xd /$i xd
  540.            $i { $j { $p pp 0 $y translate } repeat
  541.            $x $y neg $j mul translate  } repeat } bd
  542.     /pp2 { /$p exch def /$b xd /$r xd /$t xd /$l xd
  543.             /$y xd /$x xd /$j xd /$i xd
  544.            $i { $j { gs np $l $t mt $r $t l $r $b l $l $b l cp cl
  545.            $p pp gr 0 $y translate } repeat
  546.            $x $y neg $j mul translate  } repeat } bd
  547.  
  548.